In data processing, the manner in which a data processing device may place information into a data processing queue (e.g., enqueuing) and remove information from the data processing queue (e.g., dequeuing) may have a substantial impact on the maximum speed at which the data processing device may operate. The concurrent queuing of data permits a plurality of processor threads (e.g., a sequence of programmed instructions executed by the data processor) to enqueue and dequeue information from the same processing queue at substantially the same time. While the ability to process data in this manner allows for multiple queue operations to be performed in parallel, and thus for data to be processed more quickly, it is not without some inherent issues.
For example, at least one issue in existing concurrent queuing schemes is the “A-B-A” problem. An example A-B-A problem scenario initiates with a particular data processing queue location (e.g., node) containing a value “A” when first read by a data processing device. While the value of the node may subsequently change (e.g., to “B”), it may still appear to be “A” (or may even change back to “A”) when the transition goes unnoticed by the data processing device. For example, a node may be removed from the queue, deleted, and then replaced by a new node that appears to be original node, which may occur frequently in concurrent queuing. This quick transition may occur because, as stated above, threads in concurrent queuing may enqueue and dequeue nodes at substantially the same time. Not being aware of changes in the data processing queue may result in, for example, errors, corrupted data processing results, delays in receiving data processing results due to the need to reprocess, etc. Thus, any increases in speed that may be realized from concurrent queuing may be decreased or even nullified by the overall negative impact in performance due to the A-B-A problem and/or other similar processing-related issues.
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications and variations thereof will be apparent to those skilled in the art.